/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package globaltradutorws;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.ejb.Stateless;

/**
 *
 * @author Pedro
 */
@WebService(serviceName = "gtWebService")
@Stateless()
public class gtWebService {


    /**
     * Web service operation
     */
    @WebMethod(operationName = "getIdioma_entrada")
    public ArrayList getIdioma_entrada() throws FileNotFoundException {
        
        ArrayList<String> Idiomas = new ArrayList();
        String link = "https://translate.google.pt/"; 
        String er_idioma ="<option value=[a-z]{2,3}>([^<]*)</option>";
       
        int contador = 0,i=0,flag=0;

        HttpRequest.httpRequestSite(link,"", "E:/Trabalho_GPS/trunk/GlobalTradutorWS/GlobalTradutorWS-war/src/java/globaltradutorws/Idiomas.txt");

        String ficheiro = "Idiomas.txt";
        URL u = this.getClass().getResource(ficheiro);
        if(u==null)
            System.out.println("ERRO --->Ficheiro'Idiomas.txt' não encontrado");
        else{
            Scanner input = new Scanner(new FileInputStream(u.getFile()));
            Pattern p_idioma = Pattern.compile(er_idioma,Pattern.MULTILINE);

            
            while(input.hasNext()){
                flag=1;
                String linha = input.nextLine();
                
                Matcher m_idioma = p_idioma.matcher(linha);
   
                for(contador=0;contador<200;contador++){ 
                    if(m_idioma.find()){
                        for(i=0;i<Idiomas.size();i++){
                             if (Idiomas.get(i).equals(m_idioma.group(1).toString())){
                               flag=0;
                          }
                        }
                        if(flag==1){
                            Idiomas.add(m_idioma.group(1));
                        }  
                    }
                }
            }
        }
        Idiomas.add("Inglês");
        Collections.sort(Idiomas,String.CASE_INSENSITIVE_ORDER);
        return Idiomas;
    }

}
